package main

import (
	"fmt"
)

func main() {
	add(30, 60)
	add2(30, 60)

}

func add(num1 int, num2 int) int {
	// defer 将被修饰的语句压入栈中，等函数执行完成后再从栈中取出语句开始执行
	defer fmt.Println("num1:", num1)
	defer fmt.Println("num2:", num2)

	var sum int = num1 + num2
	fmt.Println("sum: ", sum)

	return sum
}

func add2(num1 int, num2 int) int {
	defer fmt.Println("num1:", num1)
	defer fmt.Println("num2:", num2)
	// defer 会将后面的代码语句压入栈中，也会将相关的值同时拷贝入栈中，不会随着函数后面的变化而变化。
	num1 += 1
	num2 += 1

	var sum int = num1 + num2
	fmt.Println("sum: ", sum)

	return sum
}